home *** CD-ROM | disk | FTP | other *** search
-
-
-
- HYPOT Mathematical Library Procedures HYPOT
-
-
-
- NNAAMMEE
- hypot, cabs - Euclidean distance, complex absolute value
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<mmaatthh..hh>>
-
- ddoouubbllee hhyyppoott((xx,,yy))
- ddoouubbllee xx,,yy;;
-
- ddoouubbllee ccaabbss((zz))
- ssttrruucctt {{ddoouubbllee xx,,yy;;}} zz;;
-
- DDEESSCCRRIIPPTTIIOONN
- Hypot(x,y) and cabs(x,y) return sqrt(x*x+y*y) computed in
- such a way that underflow will not happen, and overflow
- occurs only if the final result deserves it.
-
- hypot(infinity,v) = hypot(v,infinity) = +infinity for all v,
- including _N_a_N.
-
- EERRRROORR ((dduuee ttoo RRoouunnddooffff,, eettcc..))
- Below 0.97 _u_l_ps. Consequently hypot(5.0,12.0) = 13.0
- exactly; in general, hypot and cabs return an integer when-
- ever an integer might be expected.
-
- The same cannot be said for the shorter and faster version
- of hypot and cabs that is provided in the comments in
- cabs.c; its error can exceed 1.2 _u_l_ps.
-
- NNOOTTEESS
- As might be expected, hypot(v,_N_a_N) and hypot(_N_a_N,v) are _N_a_N
- for all _f_i_n_i_t_e v; with "reserved operand" in place of "_N_a_N",
- the same is true on a VAX. But programmers on machines
- other than a VAX (it has no infinity) might be surprised at
- first to discover that hypot(+_infinity,_N_a_N) = +infinity.
- This is intentional; it happens because hypot(infinity,v) =
- +infinity for _a_l_l v, finite or infinite. Hence
- hypot(infinity,v) is independent of v. Unlike the reserved
- operand on a VAX, the IEEE _N_a_N is designed to disappear when
- it turns out to be irrelevant, as it does in
- hypot(infinity,_N_a_N).
-
- SSEEEE AALLSSOO
- math(3M), sqrt(3M)
-
- AAUUTTHHOORR
- W. Kahan
-
-
-
-
-
-
-
-
- Sprite v1.0 May 12, 1986 1
-
-
-
-